/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 * Sleepycat Software. All rights reserved. * * $Id: FileHandle.java,v 1.1 2006/05/06 08:59:59 ckaestne Exp $ */ package com.sleepycat.je.log; import java.io.IOException; import java.io.RandomAccessFile; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.dbi.EnvironmentImpl; import com.sleepycat.je.latch.Latch; import com.sleepycat.je.latch.LatchSupport; /** * A FileHandle embodies a File and its accompanying latch. */ class FileHandle { private RandomAccessFile file; private Latch fileLatch; private boolean oldHeaderVersion; FileHandle(RandomAccessFile file, String fileName, EnvironmentImpl env, boolean oldHeaderVersion) { this.file = file; this.oldHeaderVersion = oldHeaderVersion; fileLatch = LatchSupport.makeLatch(fileName + "_fileHandle", env); } RandomAccessFile getFile() { return file; } boolean isOldHeaderVersion() { return oldHeaderVersion; } void latch() throws DatabaseException { fileLatch.acquire(); } boolean latchNoWait() throws DatabaseException { return fileLatch.acquireNoWait(); } void release() throws DatabaseException { fileLatch.release(); } void close() throws IOException { if (file != null) { file.close(); file = null; } } }